package zuoye03;

//编写 Programmer 类代表程序员，该类的成员包括：
//- 字段：name（姓名），类型为String。
//- 字段：age（年龄），类型为int。
//- 字段：skill（技能），类型为int。
//- 字段：year（工作年限），类型为int。
//- 字段：level（级别），类型为String。
//要求：
//1. 所有字段都要封装。
public class Programmer {
    private String name;
    private int age;
    private int skill;
    private int year;
    private String level;
    private String company;
    private String title;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
        System.out.println("员工的名字是：" + name);
    }

    //2. 年龄age默认是18岁，低于18岁需要给出提示（打印出消息“年龄低于18”，并且不能创建对象）。
    public int setAge() {
        if (age < 18) {
            System.out.println("年龄低于18，不能创建对象");
        } else if (age >= 18) {
            this.age = age;
        } else {
            this.age = 18;
        }
        return age;
    }

    //4. 技能skill取值为1（代表前端）或者2（代表后端）或者3（代表全栈，即前后端技能都具备）。
    public int getSkill() {
        return skill;
    }

    public void setSkill(int skill) {
        if (skill == 1) {
            System.out.println("前端");
        } else if (skill == 2) {
            System.out.println("后端");
        } else if (skill == 3) {
            System.out.println("全栈");
        } else {
            System.out.println("输入错误");
        }
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    //3. 级别level为只读字段。如果工作年限year小于1年，设置level为初级；如果工作年限1-3年，设置level为中级；如果工作年限大于3年，设置level为高级。
    public String getLevel() {
        if (year < 1) {
            level = "初级";
        } else if (year >= 1 & year <= 3) {
            level = "中级";
        } else {
            level = "高级";
        }
        return this.level;
    }

    //- 字段：company（公司），类型为String。
    public String getCompany() {
        company = "成都";
        return company;
    }


//    //6. 职务（title）根据字段level和skill字段获取。比如level为初级，skill为1，职务就是初级前端。
//    private String getTitle() {
//        if (skill == 1 & year < 1) {
//            title = "初级前端";
//        } else if (skill == 1 & year >= 1 & year <= 3) {
//            title = "中级前端";
//        } else if (skill == 1 & year > 3) {
//            title = "高级前端";
//        }
//
//        if (skill == 2 & year < 1) {
//            title = "低级后端";
//        } else if (skill == 2 & year >= 1 & year <= 3) {
//            title = "中级后端";
//        } else if (skill == 2 & year > 3) {
//            title = "高级后端";
//        }
//
//        if (skill == 3 & year < 1) {
//            title = "低级全栈";
//        } else if (skill == 3 & year >= 1 & year <= 3) {
//            title = "中级全栈";
//        } else if (skill == 3 & year > 3) {
//            title = "高级全栈";
//        }
//        return title;
//    }

    private String getTitle() {
        String skillnanme = "";
        switch (this.skill) {
            case 1:
                skillnanme = "前端";
                break;
            case 2:
                skillnanme = "后端";
                break;
            case 3:
                skillnanme = "全栈";
                break;
        }
        return this.level + skillnanme;
    }


    //7. 编写合适的构造器。
    public Programmer(String name, int age, int skill, int year) {
        this.name = name;
        this.age = age;
        this.skill = skill;
        this.year = year;
        this.level = level;
        this.company = company;
        this.title = title;
    }

    //- 方法：work() ，返回类型void。
    //5. 在方法work()中打印出程序员的工作信息，包括姓名、年龄、职务、公司。
    public void work() {
        if (age >= 18) {
            System.out.println("员工：" + name + "  " + "年龄：" + this.setAge() + "  " + "工作时间：" + year + "  " + "级别：" + this.getLevel() + "  " + "公司：" + this.getCompany() + "  " + "职务是：" + this.getTitle());
        }
        if (age < 18) {
            System.out.println("用户" + name + " " + "年龄低于18，不能创建对象");
        }
    }
}